﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Domain;
using Controller;

namespace Ecommerce
{
    public partial class NovaCompra : Form
    {
        private Cliente cliente;
        private Produto produtoSelecionado;
        private List<Compra> produtosComprados = new List<Compra>();


        public NovaCompra()
        {
            InitializeComponent();
        }

        public NovaCompra(Cliente cliente)
        {
            InitializeComponent();
            this.cliente = cliente;
            pictureBox1.Image = this.cliente.Foto;
            label1.Text = "Nome: " + this.cliente.Nome;
            label2.Text = "Telefone: " + this.cliente.Telefone;
            label3.Text = "Celular: " + this.cliente.Celular;
            label4.Text = "CPF: " + this.cliente.Cpf;
            label5.Text = "RG: " + this.cliente.Rg;
            dataGridView1.DataSource = Utils.ConvertListToDataTable<Compra>(this.produtosComprados);
            PreencheListaEndereco();
        }

        private void PreencheListaEndereco() 
        {
            foreach (Endereco end in this.cliente.Endereco)
            {
                listBox1.Items.Add("Endereço "+end.ENdereco+ " Nº: "+end.Numero+ " Compl: " +end.Complemento);
            }
        }
        private void NovaCompra_Load(object sender, EventArgs e)
        {
            ProdutoController pc = new ProdutoController();

            dataGridView2.DataSource = pc.listarProdutos();
            dataGridView2.AutoGenerateColumns = false;
        }

        private void groupBox3_Enter(object sender, EventArgs e)
        {

        }

        private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void dataGridView2_SelectionChanged(object sender, EventArgs e)
        {
            Produto p = new Produto();

            p.Id_produto = Convert.ToInt32(dataGridView2.CurrentRow.Cells["id_produto"].Value);
            p.Nome = dataGridView2.CurrentRow.Cells["Nome"].Value.ToString();
            p.Foto = (Bitmap)dataGridView2.CurrentRow.Cells["Foto"].Value;
            p.Descricao = dataGridView2.CurrentRow.Cells["Descricao"].Value.ToString();
            p.Marca = dataGridView2.CurrentRow.Cells["Marca"].Value.ToString();
            p.Modelo = dataGridView2.CurrentRow.Cells["Modelo"].Value.ToString();
            p.Preco = Convert.ToDecimal(dataGridView2.CurrentRow.Cells["Prec"].Value);
            this.produtoSelecionado = p;
            pictureBox2.Image = this.produtoSelecionado.Foto;
            label8.Text = "Nome: " + this.produtoSelecionado.Nome;
            label9.Text = "Modelo: " + this.produtoSelecionado.Modelo;
            label10.Text = "Marca: " + this.produtoSelecionado.Marca;
            richTextBox1.Text = this.produtoSelecionado.Descricao;
            PRECO.Text = "R$ " + this.produtoSelecionado.Preco;

        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {

        }

        private Decimal valorTotalProdutos(List<Compra> compras) 
        {
            Decimal valor = 0;
            for (int i = 0; i < compras.Count; i++) 
            {
                valor  = valor +compras[i].Produto.Preco * compras[i].Quantidade;
            }
            return valor;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (!textBox1.Text.Equals(""))
            {
                Compra c = new Compra();
                c.Cliente = this.cliente;
                c.Produto = this.produtoSelecionado;
                c.Quantidade = Convert.ToInt32(textBox1.Text);
                this.produtosComprados.Add(c);




                dataGridView1.DataSource = Utils.ConvertListToDataTable<Compra>(this.produtosComprados);
                dataGridView1.Refresh();
                label12.Text = "Total: " + Convert.ToString(valorTotalProdutos(this.produtosComprados));

            }
            else 
            {
                MessageBox.Show("Informe a quantidade do produto!");
            }
        }
        private void groupBox2_Enter(object sender, EventArgs e)
        {

        }

        private void button3_Click(object sender, EventArgs e)
        {
            Boolean result;
            CompraController cc = new CompraController();
            result = cc.realizaCompras(this.produtosComprados);

            if (result)
            {
                MessageBox.Show("Compra realizada com sucesso!");
                Mail m = new Mail(this.cliente);
                m.EnviarEmail(this.produtosComprados);
            }
            else
            {
                MessageBox.Show("Erro ao realizar a compra!");
            }
            
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}
